(define
    (display-names names-list)
    (let
        (
            (name (car names-list))
            (rest (cdr names-list))
        )
        (if (null? rest)
                (display (string-append "and " name))
                (begin
                    (display (string-append name ", "))
                    (display-names rest)
                )
        )
    )
)


; Main --------------------------------
(display "Hello, ")
(let*
    (
        (argv (command-line-arguments))
        (argc (length argv))
    )
    (cond
        ((= 0 argc) (display "World"))
        ((= 1 argc) (display (list-ref argv 0)))
        (else
            (display-names argv)
        )
    )
)
(display "!")
(newline)
